import { resolveTitle } from "/@/utils";
import { http } from "/@/utils/request";
import nProgress from 'nprogress';

/**
 * 创建路由相关的守卫
 * @param {Object} router
 */
export function setupRouterGuard (router) {
  // 0.页面进入之前，设置 title
  createPageGuard(router)
  // 1.页面进入之前，取消所有未完成的页面请求（需要排除掉全局初始化请求）
  createCancelHttpGuard(router)
  // 2.加载进度条
  createProgressGuard(router);
  // 3.权限
  // 4.如果是 login，重置所有的状态（暂不实现）
}
/**
 * 创建与页面相关的守卫
 * @param {Object} router
 */
function createPageGuard (router) {
  router.beforeEach(to => {
    document.title = resolveTitle(to.meta.title)
  })
}

/**
 * 取消现有还未响应的请求
 * @param router
 */
function createCancelHttpGuard (router) {
  router.beforeEach(http.forceClearCache)
}

/**
 * 创建路由 loading
 * @param router
 */
function createProgressGuard(router) {
  router.beforeEach(nProgress.start);
  router.afterEach(nProgress.done);
}
